/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Beans;

import Modelo.Trabajador;
import Utils.Constantes;
import Utils.Mensajes;
import java.io.Serializable;
import java.util.ArrayList;
import javax.faces.event.ActionEvent;

/**
 *
 * @author HNCR
 */
public class BeanTrabajador implements Serializable {
    
    private Trabajador objTrabajador_Reg;
    private Trabajador objTrabajador_Mod;
    private Trabajador objTrabajador_Detalle;
    private Trabajador objTrabajador_Eli;
    
    private Trabajador objTrabajador_Buscar;
    
    private ArrayList<Trabajador> arr_Trabajador;
    
    //TabView comportamiento ocultar o mostrar componentes
    private Integer activeTabIndex; //indice de los tab
    private boolean bandVer=true;    
    private boolean bandMod=true;
    private boolean bandEli=true;
    
     private String puntAnt;

    public Trabajador getObjTrabajador_Reg() {
        return objTrabajador_Reg;
    }

    public void setObjTrabajador_Reg(Trabajador objTrabajador_Reg) {
        this.objTrabajador_Reg = objTrabajador_Reg;
    }

    public Trabajador getObjTrabajador_Mod() {
        return objTrabajador_Mod;
    }

    public void setObjTrabajador_Mod(Trabajador objTrabajador_Mod) {
        this.objTrabajador_Mod = objTrabajador_Mod;
    }

    public Trabajador getObjTrabajador_Detalle() {
        return objTrabajador_Detalle;
    }

    public void setObjTrabajador_Detalle(Trabajador objTrabajador_Detalle) {
        this.objTrabajador_Detalle = objTrabajador_Detalle;
    }

    public Trabajador getObjTrabajador_Eli() {
        return objTrabajador_Eli;
    }

    public void setObjTrabajador_Eli(Trabajador objTrabajador_Eli) {
        this.objTrabajador_Eli = objTrabajador_Eli;
    }

    public Trabajador getObjTrabajador_Buscar() {
        return objTrabajador_Buscar;
    }

    public void setObjTrabajador_Buscar(Trabajador objTrabajador_Buscar) {
        this.objTrabajador_Buscar = objTrabajador_Buscar;
    }

    public ArrayList<Trabajador> getArr_Trabajador() {
        return arr_Trabajador;
    }

    public void setArr_Trabajador(ArrayList<Trabajador> arr_Trabajador) {
        this.arr_Trabajador = arr_Trabajador;
    }

    public Integer getActiveTabIndex() {
        return activeTabIndex;
    }

    public void setActiveTabIndex(Integer activeTabIndex) {
        this.activeTabIndex = activeTabIndex;
    }

    public boolean isBandVer() {
        return bandVer;
    }

    public void setBandVer(boolean bandVer) {
        this.bandVer = bandVer;
    }

    public boolean isBandMod() {
        return bandMod;
    }

    public void setBandMod(boolean bandMod) {
        this.bandMod = bandMod;
    }

    public boolean isBandEli() {
        return bandEli;
    }

    public void setBandEli(boolean bandEli) {
        this.bandEli = bandEli;
    }

    public String getPuntAnt() {
        return puntAnt;
    }

    public void setPuntAnt(String puntAnt) {
        this.puntAnt = puntAnt;
    }
    
    
    //Iniciallzaciones (limpian los objetos)
    public void doIniciarTrabajadorListar(){
        this.arr_Trabajador = new ArrayList<Trabajador>();
    }
    
    public void doIniciarTrabajadorRegistrar(){
        this.objTrabajador_Reg = new Trabajador();
    }
    
    public void doIniciarTrabajadorModificar(){
        this.objTrabajador_Mod = new Trabajador();
    }
    
    public void doIniciarTrabajadorDetalle(){
        this.objTrabajador_Detalle = new Trabajador();
    }
    public void doIniciarTrabajadorElimnar(){
        this.objTrabajador_Eli = new Trabajador();
    }
    //Constructor
    public BeanTrabajador() {
        
        try {
            this.doIniciarTrabajadorRegistrar();
        } catch (Exception e) {
            Mensajes.manejarError(e,"Error al Iniciar Proceso");
        }
        
    }
    
    public String doTrabajadorRegistra(){
        
        try {
            
            boolean a = false;
            a = Trabajador.registrarTrabajador(objTrabajador_Reg);
            
            if(a){
                Mensajes.guardarMensajeExito("Registro","Registrado correctamente");
                this.doIniciarTrabajadorRegistrar();// limpia los datos de la vista cuando se registra
            }
            else{
                 Mensajes.manejarError("Registro","Error al Registrar");                
            }
            
        } catch (Exception e) {
            Mensajes.manejarError(e,"Modificar");
        }
        return null;
    }
    
    public String doTrabajadorModifica(){
        
        try {
            
            if(this.modificarTrabajador()){
                Mensajes.guardarMensajeExito("Modificar","Modificado correctamente");
                this.doIniciarTrabajadorRegistrar();// limpia los datos de la vista cuando se registra
            }
            else{
                 Mensajes.manejarError("Modificar","Error al Modificar");                
            }
            
        } catch (Exception e) {
            Mensajes.manejarError(e,"Modificar");
        }
        this.desactivaTabMod();
        return null;
    }
    
     public String doTrabajadorElimina(){
        
        try {
            
            if(this.eliminarrTrabajador()){
                Mensajes.guardarMensajeExito("Eliminar","Eliminar correctamente");
                this.doIniciarTrabajadorRegistrar();// limpia los datos de la vista cuando se registra
            }
            else{
                 Mensajes.manejarError("Eliminar","Error al Eliminar");                
            }
            
        } catch (Exception e) {
            Mensajes.manejarError(e,"Eliminar");
        }
        this.desactivaTabElim();
        return null;
    }
    
    public ArrayList<Trabajador> doListarTrabajador(){
        this.doIniciarTrabajadorListar();
        this.arr_Trabajador = Trabajador.getListarTrabajador();
        
        return this.arr_Trabajador;
    }
    
    public String getSizeRegistroTrabajador(){
        if(this.arr_Trabajador==null){
            return "0";
          }
        else{
            return "" + this.arr_Trabajador.size();
        }
    }
    
    //--------------tabs
    
    public String mostrarDetalleTrabajador(Trabajador sg){   
        this.objTrabajador_Detalle=sg;
        this.bandVer=false;        
        this.activeTabIndex=2; 
        //Hace Visible el Formulario para Mostrar Detalle                 
        return null;   
    }
    
    public String desactivaTabVer(){        
       this.bandVer=true;   
        
        if(puntAnt.compareTo("2")==0){
           //this.doBuscarAsociacion();
           //this.activeTabIndex=Constantes.TAB_BUSQUEDA;
       }
       else{
           if(puntAnt.compareTo("1")==0){    
               this.doIniciarTrabajadorListar();
               this.doListarTrabajador();
               this.activeTabIndex=Constantes.TRAB_TAB_LISTA;
           }
       }
      Mensajes.guardarMensajeExito("Cancelar","Acción");
       return null;
    }
    
    //busqueda de productos
     public void onClickBusq(ActionEvent evt){ 
        Object param=evt.getComponent().getAttributes().get("param");
        this.puntAnt=param.toString();          
    }
     
     //modificar producto
     public String modificarTrabajador(Trabajador so){        
        this.doIniciarTrabajadorModificar();
        this.objTrabajador_Mod=so;
        this.bandMod=false;     
        this.activeTabIndex=Constantes.TRAB_TAB_MODIFICA;         
        return null;          
    }
    
      //desactiva tab mod
     public String desactivaTabMod(){        
       this.bandMod=true;           
       
       if(puntAnt.compareTo("2")==0){
           //this.doBuscarAsociacion();
           //this.activeTabIndex=Constantes.TAB_BUSQUEDA;
       }
       else{
           if(puntAnt.compareTo("1")==0){    
               this.doIniciarTrabajadorModificar();
               this.doListarTrabajador();
               this.activeTabIndex=Constantes.TRAB_TAB_LISTA;
           }
       }
      Mensajes.guardarMensajeExito("Cancelar","Acción");
       
       return null;
    }
     
     public boolean  modificarTrabajador(){
        boolean a=false;        
       Trabajador so=new Trabajador();
        try{            
            so=this.objTrabajador_Mod;
            this.doIniciarTrabajadorModificar();
            a=Trabajador.actualizarTrabajador(so);         
        }catch(Exception e){
            System.out.println("Error en el metodo por: " + e.getMessage());
            e.printStackTrace();
        }
       return a;    
    }
     public boolean  eliminarrTrabajador(){
        boolean a=false;        
       Trabajador so=new Trabajador();
        try{            
            so=this.objTrabajador_Eli;
            this.doIniciarTrabajadorElimnar();
            a=Trabajador.eliminarTrabajador(so);         
        }catch(Exception e){
            System.out.println("Error en el metodo por: " + e.getMessage());
            e.printStackTrace();
        }
       return a;    
    }
     
     //elimina
     public String eliminarTrabajador(Trabajador so){        
        this.doIniciarTrabajadorElimnar();
        this.objTrabajador_Eli=so;
        this.bandEli=false;     
        this.activeTabIndex=Constantes.TRAB_TAB_ELIMINA;         
        return null;          
    }
     //desactiva tab elim
     public String desactivaTabElim(){        
       this.bandEli=true;           
       
       if(puntAnt.compareTo("2")==0){
           //this.doBuscarAsociacion();
           //this.activeTabIndex=Constantes.TAB_BUSQUEDA;
       }
       else{
           if(puntAnt.compareTo("1")==0){    
               this.doIniciarTrabajadorElimnar();
               this.doListarTrabajador();
               this.activeTabIndex=Constantes.TRAB_TAB_LISTA;
           }
       }
      Mensajes.guardarMensajeExito("Cancelar","Acción");
       
       return null;
    }
}
